home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 25
/
AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso
/
Magazin
/
Future-PD
/
Kikstart
/
kik.amos
/
kik.amosSourceCode
Wrap
AMOS Source Code
|
2000-05-16
|
18KB
|
769 lines
Set Buffer 32
If Prg State=-1 Then Break Off
If Prg State=-1 Then Amos Lock
MYOFS=51
SONICMODE=0
LEVELS=20
Screen Open 1,320,256,32,Lowres
Hide
Flash Off
Curs Off
Load "fire.animfont"
Get Sprite Palette
Ink 0
Bar 0,0 To 320,245
Screen Open 2,320,256,32,Lowres
Flash Off
Curs Off
Get Palette 1
Ink 0
Bar 0,0 To 320,256
Screen Open 3,320,256,32,Lowres
Flash Off
Curs Off
Get Palette 1
Ink 0
Bar 0,0 To 320,256
Screen Open 0,320,256,2,Lowres
Flash Off
Curs Off
Ink 0
Bar 0,0 To 320,256
Dim DAT(1000)
Open In 4,"intro.text"
TL=1
Repeat
Input #4,DAT(TL)
TL=TL+1
Until Eof(4)
Close 4
Screen To Front 0
ZEILE=0
LAEN=0
DAUER=10
Dim BLOCK(16,8)
Dim ZLAEN(8)
Procedure CLEARSCREENS
Screen 0
Ink 0
Bar 0,0 To 320,256
Screen 1
Ink 0
Bar 0,0 To 320,256
Screen 2
Ink 0
Bar 0,0 To 320,256
Screen 3
Ink 0
Bar 0,0 To 320,256
End Proc
Procedure RENDERWAHNSINN
Shared BLOCK(),ZLAEN(),ZEILE
CLEARSCREENS
Screen To Front 0
For ZE=0 To ZEILE+1
If ZLAEN(ZE)=0 Then Goto NAECHSTEZEILE
For SP=1 To ZLAEN(ZE)
If BLOCK(SP,ZE)=0 Then Goto NAECHSTESZEICHEN
X=20*SP+(280-(ZLAEN(ZE)*20))/2
Y=40*(ZE+1)
Screen 1
Paste Bob X,Y,BLOCK(SP,ZE)
Screen 2
Paste Bob X,Y,BLOCK(SP,ZE)+50
Screen 3
Paste Bob X,Y,BLOCK(SP,ZE)+100
NAECHSTESZEICHEN:
Next
NAECHSTEZEILE:
Next
End Proc
Procedure ANM
Shared DAUER,SKIP
SKIP=0
For C=1 To DAUER/3
For D=1 To 3
Screen To Front D
Wait 5
If Mouse Click Then SKIP=1 : Exit 2
If Inkey$<>"" Then SKIP=1 : Exit 2
If Fire(1) Then SKIP=1 : Exit 2
Next
Next
Screen 0
Screen To Front
End Proc
Track Load Dir$+"funkey.mod",6
Track Loop On
Track Play 6
For I=1 To TL
If SKIP=1 Then Exit
If DAT(I)=42 Then CLEARSCREENS : ZEILE=0 : LAEN=0 : DAUER=10 : Goto DERNAECHSTEBITTE
If DAT(I)=43 Then ZLAEN(ZEILE)=LAEN : ZEILE=ZEILE+1 : LAEN=0 : Goto DERNAECHSTEBITTE
If DAT(I)=44 Then ZLAEN(ZEILE)=LAEN : RENDERWAHNSINN : Wait 2 : ANM : Screen To Front 0 : Goto DERNAECHSTEBITTE
LAEN=LAEN+1
BLOCK(LAEN,ZEILE)=DAT(I)
DAUER=DAUER+1
DERNAECHSTEBITTE:
Next
Track Stop
Erase 6
Erase 1
Screen 0
Screen To Front
Screen Close 1
Screen Close 2
Screen Close 3
Rem Ende der Introsequenz
'PROGRAM Super Kikstart
Hide
Randomize Timer
NODIM=0
FULLNEW:
Sprite Off
If RESTART=1 Then RESTART=0 : NODIM=1
Screen Open 0,320,256,32,Lowres
Flash Off
Curs Off
Load Iff "kikstartplus.iff"
Pen 1
Paper 0
LEVEL=1
Track Load Dir$+"backforfuture.mod",6
Track Loop On
Track Play 6
Repeat
IN$=Inkey$
If IN$=" " Then HELP
If IN$="s" Then SHOT
If IN$="i" Then INFO
If IN$="L" Then Input "Startlevel:";LEVEL : Ink 0 : Bar 0,0 To 320,8 : Curs Off : Flash Off
If IN$="S" Then SONICMODE=1 : MYOFS=$49
If IN$="q" Then Track Stop : Erase 1 : Erase 3 : Erase 5 : Erase 6 : End
Until Fire(1)
Track Stop
Screen Close 0
'H�heninformation
42 Data 8,7,6,5,4,3,4,5,6,7,8,6,7,6,4,5,5,6,8,8,6,5,7,7,7,3,3,3,2,2,2,2,2,2,4,2,7,7,7,7,3,3,3,7,7,7,2,7,7,7
'Ereignisfelder
Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,0,1,0,2,1,0,1,0,0,0,0,1,1,1,1,1,1,0,2,2,2
If NODIM=1 Then Goto ND1
Dim HOEHE(50)
Dim SPECIAL(50)
Dim LIMIT(21)
Dim REQUISITE(21) : Rem 0=nix 1=ballons 2=fl�gelr�der 3=1+2 4=gewitter
Dim OBJECT(4)
Dim VISIBLE(4)
Dim X#(4),Y#(4),MOVE#(4)
LIMIT(1)=40
REQUISITE(1)=0
LIMIT(2)=25
REQUISITE(2)=1
LIMIT(3)=30
REQUISITE(3)=2
LIMIT(4)=40
REQUISITE(4)=0
LIMIT(5)=30
REQUISITE(5)=4
LIMIT(6)=30
REQUISITE(6)=2
LIMIT(7)=40
REQUISITE(7)=2
LIMIT(8)=30
REQUISITE(8)=1
LIMIT(9)=40
REQUISITE(9)=0
LIMIT(10)=30
REQUISITE(10)=1
LIMIT(11)=30
REQUISITE(11)=0
LIMIT(12)=30
REQUISITE(12)=1
LIMIT(13)=30
REQUISITE(13)=2
LIMIT(14)=30
REQUISITE(14)=2
LIMIT(15)=30
REQUISITE(15)=1
LIMIT(16)=30
REQUISITE(16)=1
LIMIT(17)=30
REQUISITE(17)=1
LIMIT(18)=40
REQUISITE(18)=2
LIMIT(19)=30
REQUISITE(19)=0
LIMIT(20)=40
REQUISITE(20)=1
Get Rom Fonts
Restore 42
For I=1 To 50
Read HOEHE(I)
Next
For I=1 To 50
Read SPECIAL(I)
Next
Screen Open 1,320,256,8,Lowres
Colour 1,$0
Dim LEVEL(200)
Dim RE(200)
Flash Off
Curs Off
Dim S(10)
Ink 0
Bar 0,0 To 319,255
Def Scroll 1,0,150 To 320,215,-1,0 : Rem Def Scroll
Def Scroll 2,0,150 To 320,215,-2,0
Def Scroll 3,0,150 To 320,215,-3,0
Rem SOUND!
S$=""
For I=0 To 127
S$=S$+Chr$(127)
Next
For I=128 To 255
S$=S$+Chr$(255)
Next
Set Wave 2,S$
Wave 2 To %1111
Set Envel 2,0 To 1,63
Set Envel 2,1 To 5,63
For I=2 To 6
Set Envel 2,I To 0,0
Next
ND1:
LIVES=5
PUNKTE=0
JUMP=0
LIMIT#=LIMIT(1)
Tempo 15
If NODIM=1 Then Goto ND2
Dim TITLE$(LEVELS)
ND2:
TITLE$(1)="THE VERY FIRST ONE"
TITLE$(2)="RAILWAY STATION I"
TITLE$(3)="OVER THE RIVER"
TITLE$(4)="THE GREAT WALL"
TITLE$(5)="GLOOMY FOREST"
TITLE$(6)="BUILDING SITE"
TITLE$(7)="RAILWAY STATION II"
TITLE$(8)="TOXIC DRAINS"
TITLE$(9)="COAL MINES"
TITLE$(10)="BONUS"
TITLE$(11)="THE AMIGA"
TITLE$(12)="LED DISPLAY"
TITLE$(13)="MAINFRAME"
TITLE$(14)="WIRED CHAOS"
TITLE$(15)="THE PROCESSOR"
TITLE$(16)="LEGOLAND"
TITLE$(17)="JUST MORE LEGO"
TITLE$(18)="A KID BUILT THIS"
TITLE$(19)="GREAT LEGO WALL"
TITLE$(20)="THE FINAL LEVEL... FOR NOW!"
' --- Hier beginnt ein neues Level!
NEWLEVEL:
Sprite Off
If LEVEL>LEVELS Then OUTRO : RESTART=1 : Goto FULLNEW
BALLONS=0
RAD=0
GEWITTER=0
For I=1 To 4 : VISIBLE(I)=0 : Next
If Prg State=1 Then REQUISITE(LEVEL)=0
If REQUISITE(LEVEL)=0 Then Goto NOOBJECT
If REQUISITE(LEVEL)=4 Then Goto THUNDER
If REQUISITE(LEVEL)<>2 Then BALLONS=1 : Rem Sprites 2,3,4
If REQUISITE(LEVEL)<>1 Then RAD=1
Goto NOOBJECT :
THUNDER:
GEWITTER=1
NOOBJECT:
Sprite Off
If JUMP=1 Then Ink 0 : Bar 0,0 To 320,256 : Sprite Off : Wait Vbl
Open In 1,"level"+Str$(LEVEL)+".lev"
For I=0 To 200
Input #1,LEVEL(I)
Input #1,RE(I)
Next
Close 1
SET=(LEVEL-1)/5+1
Load "kik"+Str$(SET)+".abk"
Make Mask
Load "sonic.abk",1
Get Sprite Palette
Colour 0,$0
MASKOFF
Load "kikmuzak.abk"
Music 1
JUMP=0
X=1
Ink 0
Bar 0,0 To 320,256
Ink 1,0
LEV=LEVEL mod 5
If LEV=0 Then LEV=5
Text 70,70,"WORLD"+Str$(SET)+", LEVEL"+Str$(LEV)+":"
Text 70,86,TITLE$(LEVEL)
Repeat
For I=1 To 8
Scroll 1
Wait Vbl
Next
Paste Bob 310,150,LEVEL(X)
X=X+1
If X>200 Then X=1
Until Fire(1)
Music Off
'Ab hier wird das Startbild gerendert!
Ink 0,0
Bar 0,0 To 320,256
POS=10
For I=POS-20 To POS+20
X=I*8+80
J=I
If J<0 Then J=J+201
Paste Bob X,150,LEVEL(J)
Next
BIKES
' TIME ab 50, SCORE ab 200
Rem UPTIME[12.34]
Paste Bob 20,20,55 : Rem Score hat 7 Stellen
Paste Bob 160,20,56
Rem Paste Bob 232,20,57
'Los gehts
'speed zwischen 6 und 1 (?)
Ink 0,0
Bar 318,0 To 320,255
SPEED#=0.05
REALPOS#=10
OLDPOS#=10
UPSPEED#=0.0
BRAKE=0
JMP=0 : Rem Sounds...
HIJMP=0
PLOPP=0
VOL=32
GO=0
SC=1
H#=48
NEX=1
FLAG=1
ANI=0
MX#=0.15
Rem Bob Update Off : Rem Weg damit ???????
Sprite 0,X Hard(146),Y Hard(195-H#),51
Get Sprite Palette
For I=16 To 28 Step 4
Colour I+1,$FFF
Colour I+2,$888
Colour I+3,$600
Next
Colour 23,$C00
Colour 27,$990
Colour 30,$33F
If SONICMODE=0 Then Goto NOSONICPALETTE : Rem S O N I C
Colour 17,$FFF
Colour 18,$66F
Colour 19,$112
NOSONICPALETTE:
Sprite Off
UPSCORE
IMPLOSION[146,195-H#]
Timer=0
Volume 20
Repeat
If BALLONS=0 Then Sprite Off 2 : Sprite Off 3 : Sprite Off 4 : Goto NOBALLONS :
If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
For I=1 To 3
If BRAKE=1 Then X#(I)=X#(I)-5 : Goto NONEW
If VISIBLE(I)=0 and Rnd(100)>99.4 Then VISIBLE(I)=1 : MOVE#(I)=INITMOVE : X#(I)=321 : Y#(I)=Rnd(50)+70
NONEW:
If VISIBLE(I)=1 Then X#(I)=X#(I)-(SPEED#*10+1) : If X#(I)<-16 Then VISIBLE(I)=0
Y#(I)=Y#(I)+MOVE#(I) : If Y#(I)>=120 or Y#(I)<=70 Then MOVE#(I)=MOVE#(I)*-1
If Y#(I)>120 Then Y#(I)=120
If Y#(I)<70 Then Y#(I)=70
Next
If Sprite Col(0,2 To 4) Then VISIBLE(Col(-1)-1)=0 : PLOPP=60 : PUNKTE=PUNKTE+10 : LIMIT#=LIMIT#+1
If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
UPBALLONS
NOBALLONS:
If RAD=0 Then Goto NORAD
If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
If BRAKE=1 Then X#(4)=X#(4)-5 : Goto NONEW2
If VISIBLE(4)=0 and Rnd(100)>99.4 Then